//
// Created by airxs on 3/25/23.
//

#ifndef DPI_VCSTOP_H
#define DPI_VCSTOP_H

#include "svdpi.h"

//typedef uint8_t svScalar;
//typedef svScalar svBit; /* scalar */
//typedef svScalar svLogic; /* scalar */
//
//typedef uint64_t svBitVecVal;

class VCSTop {
public:
    VCSTop() {
        axi_aw_valid = 0;
        axi_aw_ready = 0;
        axi_aw_addr = 0;
        axi_aw_id = 0;
        axi_aw_len = 0;
        axi_aw_size = 0;
        axi_aw_burst = 0;
        axi_aw_cache = 0;
        axi_aw_prot = 0;
        axi_w_valid = 0;
        axi_w_ready = 0;
        axi_w_data = 0;
        axi_w_strb = 0;
        axi_w_last = 0;
        axi_b_valid = 0;
        axi_b_ready = 0;
        axi_b_id = 0;
        axi_b_resp = 0;
        axi_ar_valid = 0;
        axi_ar_ready = 0;
        axi_ar_addr = 0;
        axi_ar_id = 0;
        axi_ar_len = 0;
        axi_ar_size = 0;
        axi_ar_burst = 0;
        axi_ar_cache = 0;
        axi_ar_prot = 0;
        axi_r_valid = 0;
        axi_r_ready = 0;
        axi_r_data = 0;
        axi_r_id = 0;
        axi_r_resp = 0;
        axi_r_last = 0;

        skip = 0;
    }

    svBit           axi_aw_valid;
    svBit           axi_aw_ready;
    uint64_t        axi_aw_addr;
    svBitVecVal     axi_aw_id;
    svBitVecVal     axi_aw_len;
    svBitVecVal     axi_aw_size;
    svBitVecVal     axi_aw_burst;
    svBitVecVal     axi_aw_cache;
    svBitVecVal     axi_aw_prot;
    svBit           axi_w_valid;
    svBit           axi_w_ready;
    const svBitVecVal * axi_w_data;
    svBitVecVal     axi_w_strb;
    svBit           axi_w_last;
    svBit           axi_b_valid;
    svBit           axi_b_ready;
    svBitVecVal     axi_b_id;
    svBitVecVal     axi_b_resp;
    svBit           axi_ar_valid;
    svBit           axi_ar_ready;
    uint64_t        axi_ar_addr;
    svBitVecVal     axi_ar_id;
    svBitVecVal     axi_ar_len;
    svBitVecVal     axi_ar_size;
    svBitVecVal     axi_ar_burst;
    svBitVecVal     axi_ar_cache;
    svBitVecVal     axi_ar_prot;
    svBit           axi_r_valid;
    svBit           axi_r_ready;
    svBitVecVal *   axi_r_data;
    svBitVecVal     axi_r_id;
    svBitVecVal     axi_r_resp;
    svBit           axi_r_last;

    int skip;
};


#endif //DPI_VCSTOP_H
